#ifdef a
//析构函数  
//子类析构函数的修改（在最后一个语句之后插入：：call Base::~Base()）;
//其内部：先进行子类的析构，再进行基类的析构 
#include<iostream>
using namespace std;
class Base {
public:
	Base(int b = 10)
		:_b(b)
		,_pb(new char[10])
	{}

	~Base() {
		if (_pb) {
			delete[] _pb;
			_pb = nullptr;
			cout << "~Base" << endl;
		}
	}
	int _b;
	char* _pb;
};

class Child : public Base
{
public:
	Child(int c = 20)
		:_c(c)
		,_pc(new char[10])
	{}

	~Child() {
		if (_pc) {
			delete[] _pc;
			_pc = nullptr;
			cout << "~Child" << endl;
		}
	}
	int _c;
	char* _pc;
};
int main() {
	Child c1;
	return 0;
}
//错误说法
//构造先构造基类，在构造子类
//析构先析构子类，再析构基类
//--》构造哪个类就调用哪个类的构造函数
//-->析构哪个类就调用哪个类的析构函数
//	容易混分是因为打印结果与调用结果不同
#endif 
